package mx.com.sintelti.zapateria.clientes.daoImpl;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import mx.com.sintelti.zapateria.clientes.dao.ClientesDAO;
import mx.com.sintelti.zapateria.clientes.entity.ClientesEntity;
import mx.com.sintelti.zapateria.util.HibernateUtil;

public class ClientesDAOImpl implements ClientesDAO {

	Session session;

	
	public void altaUsuario() {
		System.out.println("alta usuario iniciando...");
		try {
			Integer id_cliente=23;
			
			session = HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
						
			String sqlQueryCliente = "insert into clientes values (?,?)";
			Query hqlQueryCliente = session.createSQLQuery(sqlQueryCliente);
			
			hqlQueryCliente.setParameter(0, id_cliente);
			hqlQueryCliente.setParameter(1, "Juan");
			
			int resultado = hqlQueryCliente.executeUpdate();
			session.getTransaction().commit();
			System.out.println("Se introdujo un nuevo Cliente;  Numero de Regristros afectados: "+ resultado);	
			
		} catch (HibernateException he) {
			he.printStackTrace();
		}		
	}
	//Baja de un cliente por un id
	public void bajaUsuario(Integer id) {
		System.out.println("Si entra");
		System.out.println(id);
		//session = HibernateUtil.getSessionFactory().getCurrentSession();
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		
		Query hqlQuery = session.createQuery("delete ClientesEntity where id = :idCliente");
		hqlQuery.setParameter("idCliente", id);
		hqlQuery.executeUpdate();
		
		session.getTransaction().commit();
		
		System.out.println("Baja Exitosa");
		
	}
	public List<ClientesEntity> mostrarLista() {
		
		session= HibernateUtil.getSessionFactory().getCurrentSession();
		
		session.beginTransaction();
		
		
		List<ClientesEntity> listaClientes= session.createCriteria(ClientesEntity.class).list();
		
		for(ClientesEntity entity: listaClientes){
			System.out.println(entity.getNombre());
		}
		
		session.getTransaction().commit();
		
		return listaClientes;
		
	}
	

}
